Quick Start
This guide gets a new Melodee 2.2.0 container installation running on port
8080. See Installing for source builds, bind mounts, and native
development.
Prerequisites
- A 64-bit Linux host using AMD64 or ARM64
- Docker with the Compose plugin, or Podman with a Compose provider
- At least 2 GB of RAM and 5 GB of free space before adding music
- Git, Python 3, and an available TCP port 8080
Option 1: Use the Published Image
Clone the repository to obtain the supported Compose file and environment template:
git clone https://github.com/melodee-project/melodee.git
cd melodee
cp example.env .env
Edit .env before starting. At minimum:
- Replace
DB_PASSWORDwith a unique database password. - Replace
MELODEE_AUTH_TOKENwith a random value of at least 64 characters. -
Add this line to pin the application image:
MELODEE_IMAGE=ghcr.io/melodee-project/melodee:2.2.0
You can generate suitable secrets with OpenSSL:
openssl rand -base64 32
openssl rand -hex 32
Pull the application image and start both services without building locally:
docker compose pull melodee.blazor
docker compose up -d --no-build
docker compose ps
For Podman, use podman compose or podman-compose in place of
docker compose, depending on the installed provider.
Option 2: Build Locally with the Setup Script
The repository includes a setup script that checks prerequisites, creates a
secure .env, builds the image, and can start the services:
git clone https://github.com/melodee-project/melodee.git
cd melodee
python3 scripts/run-container-setup.py --start
Use --check-only to run preflight checks without changing the installation.
The script prefers an installed Podman provider, then Docker.
Complete Onboarding
- Open
http://HOST:8080, replacingHOSTwith the server name or address. - Register the first account. The first registered account becomes an administrator.
- Follow the onboarding checklist and set
system.baseUrlto the public URL clients will use, such ashttps://music.example.com. -
Review Admin > Libraries. The default container paths are:
Library Container path Inbound /app/inbound/Staging /app/staging/Storage /app/storage/Podcasts /app/podcasts/Templates /app/templates/Themes /app/themes/ - Open Admin > Doctor and resolve any failed checks before importing a large collection.
Add Music
The default Compose file uses named volumes. For a one-time import, copy a release directory into the inbound volume:
docker compose cp /path/to/release/. melodee.blazor:/app/inbound/release/
For an existing library or regular imports, configure host bind mounts instead; see Installing: Persistent storage. Do not point the Inbound and Storage libraries at the same host directory.
Run the ingestion pipeline from Admin > Jobs, or from a locally configured CLI:
./mcli library scan
Albums that need attention remain in Staging. Valid albums can move through Storage and into the PostgreSQL index automatically.
Verify the Installation
curl --fail http://localhost:8080/health
docker compose logs --tail=100 melodee.blazor
Melodee exposes one health endpoint: /health. A healthy container does not
guarantee every optional integration is configured, so also review
Admin > Doctor.
Next Steps
- Installation and storage options
- Configuration
- Backup and recovery
- Reverse proxy and homelab deployment
- Connect an OpenSubsonic client
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.